CriticalSection Class

Used to protect a resource in a multithreaded environment.

Events

None

Properties

None

Methods

Enter

Leave

TryEnter


More information available in parent classes: Object


Notes

A CriticalSection is similar to a Semaphore, except a CriticalSection protects only one resource. The Semaphore class, on the other hand, can protect more than one resource. The Mutex class is similar to a CriticalSection, but its scope is all the applications that are running on the user's computer, not just the current REALbasic application. You can use a Mutex, for example, check whether another copy of the application is running and is using a needed resource.

You use critical sections in conjunction with Threads. In a situation in which two or more of the threads might try to access the same item, then you should enclose the code with calls to the Enter (or TryEnter) and Leave methods.

One strategy is this:

Create a subclass of Thread which does the operations that might compete for access to a resource,

Create a CriticalSection property of Public scope in, for example, the window that contains the control that calls the threads.

In the Run event handler of the Thread, call Enter and Leave before and after the code that tries to access the shared resource.


See Also

Mutex, Semaphore, Thread classes.